草庐IT

c++ - SIMD C++ 库

全部标签

c++ - 微小的 SSE addpd 循环比 AMD Phenom II 上的标量稍慢?

是的,我读了SIMDcoderunsslowerthanscalarcode.不,这不是真正的重复。我使用二维数学已有一段时间了,并且正在将我的代码库从C移植到C++。我在使用C时遇到了一些问题,这意味着我确实需要多态性,但那是另一回事了。不管怎样,我之前考虑过这个,但它提供了一个使用2Dvector类的绝好机会,包括常见数学运算的SSE实现。是的,我知道那里有图书馆,但我想自己尝试一下以了解发生了什么,而且我没有使用比+=更复杂的东西。.我的实现是通过,用一个union{__m128dss;struct{doublex;doubley;}}SSE似乎很慢,所以我查看了它生成的ASM输

c++ - 如何将 C++ 共享库与 gcc 链接

我看到了一个带有C++共享库的GCC链接,但我无法自己复制它。所以首先我创建了一个带有测试函数的C++库:g++-shared-olibtest.sotest.c然后我有一个测试主函数,它调用库函数并像这样编译它gcc-oprog.outmain.c-L.-ltest然后我收到错误undefinedreferenceto'testfunc'我认为这是由库中的不同引用引起的...C将函数命名为testfunc,而C++将函数命名为[somestuff]__testfunc[maybeagainsomestuff]。我也试过用gcc-oprog.outmain.c-l:libtest.so

c++ - 使用 malloc() 初始化类

当C++类的内存已从Cmalloc中保留时,应该如何使用它?我正在使用C库(lua),我需要向它公开一个C++类,在这种情况下,为了垃圾收集这些保留空间,lua会保留内存。一个更简单的类似场景如下:#includeclassClase{private:std::stringvalor;public:Clase(){}Clase(conststd::string&valor):valor(valor){}conststd::string&get()const{returnthis->valor;}voidset(conststd::string&valor){this->valor=va

c++ - 函数指针 - 为什么,什么时候我可以不用?

免责声明:我已经阅读了无数关于该主题的其他文章,但我仍然不明白。示例:为什么这样做:voidfunc(inta,void(*callback)(int)){/*dosomethingwithaandcallback*/callback(3);}voidpointme(intb){/*dosomethingwithb*/}intmain(){void(*pf)(int);pf=&pointme;func(10,pf);}当我可以简单地做到这一点时:voidfunc(inta){pointme(3);/*dosomethingwitha*/}voidpointme(intb){/*doso

c++ - HAVE_* 宏的目的是什么?

我在CMake项目中重用autotools项目的一些C/C++源文件,我看到许多源文件散落着如下行:#ifdefHAVE_UNISTD_H#include//forgetpid()#endif如果getpid()是可选的并且它的调用被等效的HAVE_UNISTD_H指令包围,我会理解这个构造的目的。但是,如果没有HAVE_UNISTD_H,源文件不会编译,并提示getpid()未定义。这感觉比编译器让我知道未找到unistd.h要神秘得多。当然,这只是一个例子。其他流行的宏包括HAVE_STDINT_H、HAVE_INTTYPES_H等,它们的存在是编译源文件所必需的。为什么要包含HA

c++ - 如何将指向成员函数的指针传递给 C 函数?

这个问题在这里已经有了答案:关闭12年前。PossibleDuplicate:UsingaC++classmemberfunctionasaCcallbackfunction我正在使用C库(winpcap)编写面向对象的库。我需要将网络数据包到达时调用的回调函数作为函数指针传递。我想将一个成员函数指针传递给winpcap,以保持我的设计面向对象并允许不同的对象接收不同的数据包。然而,据我所知,成员函数有不同的调用约定,因此不能传递给C函数。有没有办法来解决这个问题。我对boost::bind的实验(除了反复试验,我几乎无法使用它)没有成果。有没有办法改变成员函数的调用约定?这是我现在使

c++ - 什么是可移植的轻量级 C/C++ 正则表达式库?

关闭。这个问题不符合StackOverflowguidelines.它目前不接受答案。我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。关闭8年前。ImprovethisquestionPossibleDuplicate:LightweightandportableregexlibraryforC/C++?我正在寻找用于匹配正则表达式的C++(C也可接受)库。图书馆应该满足这些要求:可以在Windows上构建(MSVC7及更新版本)可以在Linux(g++3.4及更新版本)上构建。没有外部依赖;仅允许C/C++运行时和STL匹配小(~200个字符)字

c++ - 如何解决出现在 Objective-C++ 而不是 Objective-C 中的链接错误?

我正在将我的AppDelegate文件从.m转换为.mm(Objective-C到Objective-C++),以便我可以访问用Objective-C++编写的第三方库。在Objective-C中,我的应用程序委托(delegate)构建并运行良好。但是当我更改扩展名时,项目构建并且出现链接错误,所有这些都缺少我使用的用C编写的静态库中的符号。这些错误是具有以下格式的经典链接错误:“MyFunction(arguments)”,引用自:-MyAppDelegate.o中的[MyAppDelegatemyMethod]找不到符号所有的问题都在应用委托(delegate)对象中。我知道我已

c++ - distcc 中的链接阶段

在使用distcc构建项目时,链接阶段是在本地完成的,而不是像编译那样发送到其他计算机上完成的,这有什么特别的原因吗?阅读distcc白页并没有给出明确的答案,但我猜测链接目标文件所花费的时间与编译相比并不是很重要。有什么想法吗? 最佳答案 distcc的工作方式是在本地预处理输入文件,直到创建单个文件翻译单元。然后该文件通过网络发送并编译。在那个阶段,远程distcc服务器只需要一个编译器,它甚至不需要项目的头文件。然后将编译的输出移回客户端并在本地存储为目标文件。请注意,这意味着不仅链接,而且预处理也在本地执行。这种工作分工对于

c++ - 在 C 和 C++ 库之间共享变量的困境

我有一个简单的问题。我有两个库,一个用C编译,另一个用C++编译,其中C库由C++库链接和加载。我需要在C库中声明一个既可以读写又可以读写的结构实例。你如何做到这一点?谢谢编辑:补充说它是一个结构的实例,而不仅仅是声明 最佳答案 您需要创建一个单独的头文件,该文件包含在C和C++库中的模块中:#ifndefYOURSTRUCT_H#defineYOURSTRUCT_H#ifdef__cplusplusextern"C"{#endifstructYourStruct{//yourcontentshere};#ifdef__cplusp